package br.com.iss.transporteCia.model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import br.com.iss.transporteCia.view.SistemaPrincipal;

@Entity
@Table(name = "FRETE")
public class Frete {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "FRETE_ID", unique = true, nullable = false)
	private Long id;

	@ManyToOne
	@JoinColumn(name = "CONTRATO_ID")
	private Contrato contrato;

	@ManyToOne
	@JoinColumn(name = "REMETENTE_ID")
	private Cliente remetente;

	@ManyToOne
	@JoinColumn(name = "DESTINATARIO_ID")
	private Cliente destinatario;

	@ManyToOne
	@JoinColumn(name = "ROTA_ID")
	private Rota rota;

	@Column(name = "FRETE_DATAHORASAIDA", length = 150)
	@Temporal(TemporalType.TIMESTAMP)
	private Date dataHoraSaida;

	@Column(name = "FRETE_DATAHORACHEGADA", length = 150)
	@Temporal(TemporalType.TIMESTAMP)
	private Date dataHoraChegada;

	@Column(name = "FRETE_KM", length = 150)
	private double km;

	@ManyToOne
	@JoinColumn(name = "PRODUTO_ID")
	private Produto produto;

	@ManyToOne
	@JoinColumn(name = "FROTA_ID")
	private Frota frota;

	@Column(name = "FRETE_VALOR", length = 150)
	private double valor;

	public Frete() {
		super();
	}

	public Frete(Contrato contrato, Cliente remetente, Cliente destinatario,
			Rota rota, Date dataHoraSaida, Date dataHoraChegada, double km,
			Produto produto, Frota frota, Double valor) {
		this.contrato = contrato;
		this.remetente = remetente;
		this.destinatario = destinatario;
		this.rota = rota;
		this.dataHoraSaida = dataHoraSaida;
		this.dataHoraChegada = dataHoraChegada;
		this.km = km;
		this.produto = produto;
		this.frota = frota;
		this.valor = valor;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Contrato getContrato() {
		return contrato;
	}

	public void setContrato(Contrato contrato) {
		this.contrato = contrato;
	}

	public Cliente getRemetente() {
		return remetente;
	}

	public void setRemetente(Cliente remetente) {
		this.remetente = remetente;
	}

	public Cliente getDestinatario() {
		return destinatario;
	}

	public void setDestinatario(Cliente destinatario) {
		this.destinatario = destinatario;
	}

	public Rota getRota() {
		return rota;
	}

	public void setRota(Rota rota) {
		this.rota = rota;
	}

	public Date getDataHoraSaida() {
		return dataHoraSaida;
	}

	public void setDataHoraSaida(Date dataHoraSaida) {
		this.dataHoraSaida = dataHoraSaida;
	}

	public Date getDataHoraChegada() {
		return dataHoraChegada;
	}

	public void setDataHoraChegada(Date dataHoraChegada) {
		this.dataHoraChegada = dataHoraChegada;
	}

	public double getKm() {
		return km;
	}

	public void setKm(double km) {
		this.km = km;
	}

	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public Frota getFrota() {
		return frota;
	}

	public void setFrota(Frota frota) {
		this.frota = frota;
	}

	public Double getValor() {
		return valor;
	}

	public void setValor(Double valor) {
		this.valor = valor;
	}
	
	@Override
    public String toString() {
        return this.getId().toString();
    }
	
	public void salvar() {
		if (this.getId() != null) {
			CrudUtil.atualizar(this);
		} else {
			CrudUtil.salvar(this);
		}
		SistemaPrincipal.getInstance().removeTela();
	}
}